#include"my_stdio.h"
#include<string.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>

mFILE*mfopen(const char *filename ,const char *mode)
{
  int fd=-1;
  if(strcmp(mode,"r")==0)
  {
    fd=open("filename",O_RDONLY);//为什么
  }else if(strcmp(mode,"w")==0)
  {
    fd =open("filename",O_WRONLY|O_CREAT|O_TRUNC,0666);
  }else if(strcmp("a",mode)==0)
  {
    fd=open("filename",O_WRONLY|O_CREAT|O_APPEND,0666);
    
  }

  mFILE* mf=(mFILE*)malloc(sizeof(mFILE));
  if(!mf)
  {
    return NULL;
  }
  mf->fileno=fd;
  mf->flag=FLUSH_LINE;//这个代码默认是直接行输入

  mf->size=0;
  mf->cap=SIZE;

  return mf;

}//打开文件 返回结构体

void mfflush(mFILE*stream)
{
  if(stream->size>0)
  {
    write(stream->fileno,stream->outbuffer,stream->size);
    fsync(stream->fileno);
    stream->size=0;
  }


}
int mfwrite(const void *ptr,int num,mFILE*stream)//通过文件流  
{

  memcpy(stream->outbuffer+stream->size,ptr,num);
  stream->size+=num;
  if(stream->flag==FLUSH_LINE&&stream->size>0&&stream->outbuffer[stream->size-1]=='\n')
  {
    mfflush(stream);
  }

  return num;

}               

void mfclose(mFILE*stream)
{


  if(stream->size>0)mfflush(stream);
  close(stream->fileno);




}//文件流本质是一个结构体 
